package path.calculator;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import java.util.List;

import org.junit.Test;

public class RecursivePermutationGeneratorTest {
    @Test
    public void zeroIsZero() {
        RecursivePermutationGenerator generator = new RecursivePermutationGenerator(0);
        assertEquals(0, generator.allPermutations().size());
    }

    @Test
    public void oneIsOne() {
        RecursivePermutationGenerator generator = new RecursivePermutationGenerator(1);
        assertEquals(1, generator.allPermutations().size());
    }

    @Test
    public void twoIsTwo() {
        RecursivePermutationGenerator generator = new RecursivePermutationGenerator(2);
        assertEquals(2, generator.allPermutations().size());
    }

    @Test
    public void threeGivesSix() {
        RecursivePermutationGenerator generator = new RecursivePermutationGenerator(3);
        assertEquals(6, generator.allPermutations().size());
    }

    @Test
    public void fourGives24() {
        RecursivePermutationGenerator generator = new RecursivePermutationGenerator(4);
        List<String> allPermutations = generator.allPermutations();
        assertEquals(24, allPermutations.size());
        assertTrue(allPermutations.contains("abcd"));
    }

    @Test
    public void fiveGives120() {
        RecursivePermutationGenerator generator = new RecursivePermutationGenerator(5);
        assertEquals(120, generator.allPermutations().size());
    }
}
